// 给定一个由0,1组成的数组nums，再给定一个整数k，最多可以将k个值从0变到1, 返回仅包含1的最长连续子数组的长度

// 思路，双指针，left和right，left指向包含1的连续子数组左侧索引，right指向当前索引，更新当前zeroCount，如果超过k，
// 则需要右移left，更新zeroCount和result
// 时间复杂度：O(n)
// 空间复杂度：O(1)

function longestOnes(arr, k) {
    let left = 0
    let right = 0
    let zeroCount = 0
    let result = 0
    while (right < arr.length) {
        if (arr[right] === 0) {
            zeroCount++
        }
        if (zeroCount > k) {
            if (arr[left] === 0) {
                zeroCount--
            }
            left++
        }
        result = Math.max(result, right - left + 1)
        right++
    }
    return result
}

let nums = [1,1,1,0,0,0,1,1,1,1,0], K = 2
console.log(longestOnes(nums, K))